package main

import (
	"fmt"
	"math"
)

func main() {

	//uint8 无符号 8位整型（0到255）
	//uint16 无符号 16位整型（0到65535）
	//uint32 无符号 32位整型 (0 到 4294967295)
	//uint64 无符号 64位整型 (0 到 18446744073709551615)
	//int8 有符号 8位整型 (-128 到 127)
	//int16 有符号 16位整型 (-32768 到 32767)
	//int32 有符号 32位整型 (-2147483648 到 2147483647)
	//int64 有符号 64位整型 (-9223372036854775808 到 9223372036854775807)

	//uint8就是我们熟知的byte型，int16对应C语言中的short型，int64对应C语言中的long型
	//在go语言中byte类型也就是uint8

	//uint 32位操作系统上就是uint32，64位操作系统上就是uint64
	//int  32位操作系统上就是int32，64位操作系统上就是int64
	//uintptr 无符号整型，用于存放一个指针

	//注意：在使用int和 uint类型时，不能假定它是32位或64位的整型，
	//而是考虑int和uint可能在不同平台上的差异

	//注意事项：获取对象的长度的内建len()函数返回的长度可以根据不同平台的字节长度进行变化。
	//实际使用中，切片或 map 的元素数量等都可以用int来表示。
	//在涉及到二进制传输、读写文件的结构描述时，
	//为了保持文件的结构不会受到不同编译目标平台字节长度的影响，不要使用int和uint

	// 十进制
	var a int = 10
	fmt.Printf("%d \n", a) // 10
	fmt.Printf("%b \n", a) // 1010  占位符%b表示二进制

	// 八进制  以0开头
	var b int = 077
	fmt.Printf("%d \n", b)
	fmt.Printf("%o \n", b) // 77

	// 十六进制  以0x开头
	var c int = 0xff

	fmt.Printf("%x \n", c) // ff
	fmt.Printf("%X \n", c) // FF
	fmt.Printf("%d \n", c)

	//uint8
	var age uint8 //(0~255)
	age = 255
	fmt.Println(age)

	//浮点数
	//float32和float64。这两种浮点型数据格式遵循IEEE 754 标准：
	//float32 的浮点数的最大范围约为 3.4e38，可以使用常量定义：math.MaxFloat32。
	//float64 的浮点数的最大范围约为 1.8e308，可以使用一个常量定义：math.MaxFloat64
	fmt.Println("==============")
	fmt.Println(math.MaxFloat32)
	fmt.Println(math.MaxFloat64)
	var b1 float32 = 6.10233
	fmt.Println(b1)

	fmt.Println("==============")

	//Go语言中以bool类型进行声明布尔型数据，布尔型数据只有true（真）和false（假）两个值。
	//注意：
	//布尔类型变量的默认值为false。
	//Go 语言中不允许将整型强制转换为布尔型.
	//布尔型无法参与数值运算，也无法与其他类型进行转换
	//go语言中，0不是false，1也不是true

	var a1 bool
	fmt.Println(a1)
	a1 = true
	fmt.Println(a1)
	//a = 11.1 //会报错

	//字符串
	fmt.Println("==============")
	s1 := "hello Beijing"
	fmt.Println(s1)
	s2 := "你好 北京"
	fmt.Println(s2)
	//打印windows平台下的一个路径 C:\code\go.exe
	fmt.Println("C:\\code\\go.exe")
	fmt.Printf("\t制表符")
	fmt.Printf("\n换行符")
	fmt.Println("===============")
	fmt.Println()

	s3 := `
	多行字符串
	两个反引号之间的内容
	会原样输出
	\t
	\n
	`
	fmt.Println(s3)
}
